Some individual studies were analysed to ascertain the presence of batch effects within a single study. Two high performing batch correction methods were also tested on these datasets.
import os
import numpy as np
import pandas as pd
import scanpy as sc
import scanpy.external as sce
import anndata as ad
from anndata import AnnData
import matplotlib.pyplot as plt
from scipy import stats
import scvi
from rich import print
from scib_metrics.benchmark import Benchmarker
from scvi.model.utils import mde
from scvi_colab import install
import scanorama
sc.settings.verbosity = 3
sc.logging.print_header()
sc.settings.set_figure_params(dpi=80, facecolor='white')
if not os.path.exists("outs"):
os.makedirs("outs")
if not os.path.exists("plots"):
os.makedirs("plots")
combined_file = 'outs/zhang_filtered.h5ad'
corrected_file = 'outs/zhang_batch_correct.h5ad'
Global seed set to 0 /Users/jwhittle/opt/anaconda3/envs/scvi-env/lib/python3.9/site-packages/flax/struct.py:132: FutureWarning: jax.tree_util.register_keypaths is deprecated, and will be removed in a future release. Please use `register_pytree_with_keys()` instead. jax.tree_util.register_keypaths(data_clz, keypaths) /Users/jwhittle/opt/anaconda3/envs/scvi-env/lib/python3.9/site-packages/flax/struct.py:132: FutureWarning: jax.tree_util.register_keypaths is deprecated, and will be removed in a future release. Please use `register_pytree_with_keys()` instead. jax.tree_util.register_keypaths(data_clz, keypaths)
scanpy==1.9.3 anndata==0.8.0 umap==0.5.3 numpy==1.23.5 scipy==1.9.1 pandas==1.5.3 scikit-learn==1.2.2 statsmodels==0.14.0 python-igraph==0.10.4 louvain==0.8.0 pynndescent==0.5.8
import rpy2
%load_ext rpy2.ipython
from rpy2.robjects.packages import importr
# import R tools
base = importr('base')
utils = importr('utils')
%%R
suppressMessages(library(kBET))
# Read in data files - with cells already filtered
amlP105 = sc.read_h5ad("../amlP105/outs/AMLP105_cell_filtered.h5ad")
amlP106 = sc.read_h5ad("../amlP106/outs/AMLP106_cell_filtered.h5ad")
amlP108 = sc.read_h5ad("../amlP108/outs/AMLP108_cell_filtered.h5ad")
amlP114 = sc.read_h5ad("../amlP114/outs/AMLP114_cell_filtered.h5ad")
amlP115 = sc.read_h5ad("../amlP115/outs/AMLP115_cell_filtered.h5ad")
amlP116 = sc.read_h5ad("../amlP116/outs/AMLP116_cell_filtered.h5ad")
amlP117 = sc.read_h5ad("../amlP117/outs/AMLP117_cell_filtered.h5ad")
amlP118 = sc.read_h5ad("../amlP118/outs/AMLP118_cell_filtered.h5ad")
amlP119 = sc.read_h5ad("../amlP119/outs/AMLP119_cell_filtered.h5ad")
amlP120 = sc.read_h5ad("../amlP120/outs/AMlP120_cell_filtered.h5ad")
amlP122 = sc.read_h5ad("../amlP122/outs/AMLP122_cell_filtered.h5ad")
amlP123 = sc.read_h5ad("../amlP123/outs/AMLP123_cell_filtered.h5ad")
amlP124 = sc.read_h5ad("../amlP124/outs/AMLP124_cell_filtered.h5ad")
data = [amlP105,amlP106,amlP108,amlP114,amlP115,amlP116,amlP117,amlP118,amlP119,
amlP120,amlP122,amlP123,amlP124]
# Concetenate files
adata = ad.concat(data, merge="same")
# Delete individual datasets to save space
del(amlP105,amlP106,amlP108,amlP114,amlP115,amlP116,amlP117,amlP118,amlP119,
amlP120,amlP122,amlP123,amlP124)
# Annotate mitochondrial/ribosomal/hb genes
adata.var['mt'] = adata.var_names.str.startswith('MT-')
adata.var['ribo'] = adata.var_names.str.startswith(("RPS","RPL"))
adata.var['hb'] = adata.var_names.str.contains(("^HB[^(P)]"))
# Run QC function
sc.pp.calculate_qc_metrics(adata, qc_vars=['mt','ribo', 'hb'], percent_top=None, log1p=False, inplace=True)
# Add the total counts per cell
adata.obs['n_counts'] = adata.X.sum(axis=1).A1
sc.pl.violin(adata, ['n_genes_by_counts', 'total_counts', 'pct_counts_mt','pct_counts_ribo', 'pct_counts_hb'],
jitter=0.4, groupby = 'sample', rotation= 45)
sc.pl.scatter(adata, x='total_counts', y='pct_counts_mt')
sc.pl.scatter(adata, x='total_counts', y='n_genes_by_counts', color='pct_counts_mt')
sc.pp.filter_genes(adata, min_cells=10)
print(adata.n_obs, adata.n_vars)
filtered out 11582 genes that are detected in less than 10 cells
75648 21956
sc.pl.highest_expr_genes(adata, n_top=20)
normalizing counts per cell
finished (0:00:01)
# MALAT1 Filtering
malat1 = adata.var_names.str.startswith('MALAT1')
keep = np.invert(malat1)
adata = adata[:,keep]
print(adata.n_obs, adata.n_vars)
75648 21955
sc.pl.highest_expr_genes(adata, n_top=20)
/Users/jwhittle/opt/anaconda3/envs/scvi-env/lib/python3.9/site-packages/scanpy/preprocessing/_normalization.py:170: UserWarning: Received a view of an AnnData. Making a copy. view_to_actual(adata)
normalizing counts per cell
finished (0:00:01)
# Using biomart to identify relevant genes
annot = sc.queries.biomart_annotations(
"hsapiens",
["ensembl_gene_id", "external_gene_name", "start_position", "end_position", "chromosome_name"],
).set_index("external_gene_name")
# Find percentage chrY
chrY_genes = adata.var_names.intersection(annot.index[annot.chromosome_name == "Y"])
adata.obs['percent_chrY'] = np.sum(
adata[:, chrY_genes].X, axis=1) / np.sum(adata.X, axis=1) * 100
# XIST Proportion
adata.obs["XIST-counts"] = adata.X[:,adata.var_names.str.match('XIST')].toarray()
sc.pl.violin(adata, ["XIST-counts", "percent_chrY"], groupby = 'sample',
rotation=45, jitter=0.4)
adata.layers["counts"] = adata.X.copy()
adata.write_h5ad(combined_file)
# Log normalization
sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)
normalizing counts per cell
finished (0:00:01)
# Get highly variable genes
sc.pp.highly_variable_genes(
adata,
flavor="seurat_v3",
n_top_genes=2000,
layer="counts",
batch_key="sample",
subset=True,
)
If you pass `n_top_genes`, all cutoffs are ignored.
extracting highly variable genes
--> added
'highly_variable', boolean vector (adata.var)
'highly_variable_rank', float vector (adata.var)
'means', float vector (adata.var)
'variances', float vector (adata.var)
'variances_norm', float vector (adata.var)
# PCA
sc.tl.pca(adata, svd_solver='arpack')
sc.pl.pca_variance_ratio(adata, log=True)
computing PCA
on highly variable genes
with n_comps=50
finished (0:00:05)
# Calculate neighbours graph
sc.pp.neighbors(adata, n_pcs = 30, n_neighbors = 20)
# UMAP
sc.tl.umap(adata)
sc.pl.umap(adata, color='sample', title='Zhang 2023: Uncorrected')
computing neighbors
using 'X_pca' with n_pcs = 30
OMP: Info #276: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.
finished: added to `.uns['neighbors']`
`.obsp['distances']`, distances for each pair of neighbors
`.obsp['connectivities']`, weighted adjacency matrix (0:01:27)
computing UMAP
finished: added
'X_umap', UMAP coordinates (adata.obsm) (0:00:43)
/Users/jwhittle/opt/anaconda3/envs/scvi-env/lib/python3.9/site-packages/scanpy/plotting/_tools/scatterplots.py:392: UserWarning: No data for colormapping provided via 'c'. Parameters 'cmap' will be ignored cax = scatter(
sc.pl.umap(adata, color=["CD34","CD14",'IL7R'])
adata_ss = sc.pp.subsample(adata, fraction=0.2, copy=True)
# Make Expression Matrix
count = pd.DataFrame(adata_ss.X.A, columns=adata_ss.var.index, index = adata_ss.obs.index).T
# Get batch ids
batch = adata_ss.obs["sample"]
%%R -i count,batch
batch <- as.factor(batch)
batch.estimate <- kBET(count, batch)
sce.pp.harmony_integrate(adata, 'sample')
2024-10-14 22:06:07,975 - harmonypy - INFO - Computing initial centroids with sklearn.KMeans... 2024-10-14 22:06:23,324 - harmonypy - INFO - sklearn.KMeans initialization complete. 2024-10-14 22:06:23,502 - harmonypy - INFO - Iteration 1 of 10 2024-10-14 22:06:37,751 - harmonypy - INFO - Iteration 2 of 10 2024-10-14 22:06:51,844 - harmonypy - INFO - Iteration 3 of 10 2024-10-14 22:07:05,849 - harmonypy - INFO - Iteration 4 of 10 2024-10-14 22:07:21,499 - harmonypy - INFO - Iteration 5 of 10 2024-10-14 22:07:31,877 - harmonypy - INFO - Converged after 5 iterations
sc.pp.neighbors(adata, use_rep="X_pca_harmony")
sc.tl.umap(adata)
sc.pl.umap(adata, color='sample', title='Zhang 2023: Harmony')
sc.pl.umap(adata, color=["CD34","CD14",'IL7R'])
computing neighbors
finished: added to `.uns['neighbors']`
`.obsp['distances']`, distances for each pair of neighbors
`.obsp['connectivities']`, weighted adjacency matrix (0:00:04)
computing UMAP
finished: added
'X_umap', UMAP coordinates (adata.obsm) (0:00:39)
/Users/jwhittle/opt/anaconda3/envs/scvi-env/lib/python3.9/site-packages/scanpy/plotting/_tools/scatterplots.py:392: UserWarning: No data for colormapping provided via 'c'. Parameters 'cmap' will be ignored cax = scatter(
scvi.model.SCVI.setup_anndata(adata, layer="counts", batch_key="sample")
vae = scvi.model.SCVI(adata, n_layers=2, n_latent=30, gene_likelihood="nb")
vae.train()
GPU available: True (mps), used: False TPU available: False, using: 0 TPU cores IPU available: False, using: 0 IPUs HPU available: False, using: 0 HPUs /Users/jwhittle/opt/anaconda3/envs/scvi-env/lib/python3.9/site-packages/pytorch_lightning/trainer/setup.py:201: UserWarning: MPS available but not used. Set `accelerator` and `devices` using `Trainer(accelerator='mps', devices=1)`. rank_zero_warn(
Epoch 106/106: 100%|███████| 106/106 [16:35<00:00, 9.38s/it, loss=707, v_num=1]
`Trainer.fit` stopped: `max_epochs=106` reached.
Epoch 106/106: 100%|███████| 106/106 [16:35<00:00, 9.40s/it, loss=707, v_num=1]
adata.obsm["X_scVI"] = vae.get_latent_representation()
sc.pp.neighbors(adata, use_rep="X_scVI")
sc.tl.umap(adata)
sc.pl.umap(adata, color='sample', title='Zhang 2023: SCVI')
sc.pl.umap(adata, color=["CD34","CD14",'IL7R'])
computing neighbors
finished: added to `.uns['neighbors']`
`.obsp['distances']`, distances for each pair of neighbors
`.obsp['connectivities']`, weighted adjacency matrix (0:00:04)
computing UMAP
finished: added
'X_umap', UMAP coordinates (adata.obsm) (0:00:36)
/Users/jwhittle/opt/anaconda3/envs/scvi-env/lib/python3.9/site-packages/scanpy/plotting/_tools/scatterplots.py:392: UserWarning: No data for colormapping provided via 'c'. Parameters 'cmap' will be ignored cax = scatter(
adata.write_h5ad(corrected_file)
!conda list
# packages in environment at /Users/jwhittle/opt/anaconda3: # # Name Version Build Channel _ipyw_jlab_nb_ext_conf 0.1.0 py39hca03da5_1 absl-py 1.4.0 pypi_0 pypi adjusttext 1.2.0 pypi_0 pypi aiohttp 3.8.4 pypi_0 pypi aiosignal 1.3.1 pypi_0 pypi alabaster 0.7.12 pyhd3eb1b0_0 anaconda 2022.10 py39_0 anaconda-client 1.11.0 py39hca03da5_0 anaconda-navigator 2.3.1 py39hca03da5_0 anaconda-project 0.11.1 py39hca03da5_0 anndata 0.8.0 pypi_0 pypi annoy 1.17.1 pypi_0 pypi anyio 3.5.0 py39hca03da5_0 appdirs 1.4.4 pyhd3eb1b0_0 appnope 0.1.2 py39hca03da5_1001 appscript 1.1.2 py39h1a28f6b_0 arboreto 0.1.6 pypi_0 pypi argon2-cffi 21.3.0 pyhd3eb1b0_0 argon2-cffi-bindings 21.2.0 py39h1a28f6b_0 arpack 3.7.0 h58ebc17_2 conda-forge array-api-compat 1.4 pyhd8ed1ab_0 conda-forge arrow 1.2.3 pypi_0 pypi arviz 0.17.1 pypi_0 pypi astroid 2.11.7 py39hca03da5_0 astropy 5.1 py39heec5a64_0 asttokens 2.0.5 pyhd3eb1b0_0 async-timeout 4.0.2 pypi_0 pypi attrs 21.4.0 pyhd3eb1b0_0 automat 20.2.0 py_0 babel 2.9.1 pyhd3eb1b0_0 backcall 0.2.0 pyhd3eb1b0_0 backoff 2.2.1 pypi_0 pypi backports 1.1 pyhd3eb1b0_0 backports.functools_lru_cache 1.6.4 pyhd3eb1b0_0 backports.tempfile 1.0 pyhd3eb1b0_1 backports.weakref 1.0.post1 py_1 bash-kernel 0.9.1 pypi_0 pypi bcrypt 3.2.0 py39h1a28f6b_1 beautifulsoup4 4.11.1 py39hca03da5_0 biopython 1.81 pypi_0 pypi biothings-client 0.2.6 pypi_0 pypi bitarray 2.5.1 py39h1a28f6b_0 bkcharts 0.2 py39hca03da5_1 blas 1.0 openblas bleach 4.1.0 pyhd3eb1b0_0 blessed 1.20.0 pypi_0 pypi blosc 1.21.0 h98b2900_1 bokeh 2.4.3 py39hca03da5_0 boltons 23.0.0 pypi_0 pypi boto3 1.24.28 py39hca03da5_0 botocore 1.27.28 py39hca03da5_0 bottleneck 1.3.5 py39heec5a64_0 brotli 1.0.9 h1a28f6b_7 brotli-bin 1.0.9 h1a28f6b_7 brotlipy 0.7.0 py39h1a28f6b_1002 brunsli 0.1 hc377ac9_1 bzip2 1.0.8 h620ffc9_4 c-ares 1.18.1 h1a28f6b_0 ca-certificates 2022.07.19 hca03da5_0 cached-property 1.5.2 pypi_0 pypi cctools 949.0.1 hc179dcd_25 cctools_osx-arm64 949.0.1 h332cad3_25 celltypist 1.3.0 pypi_0 pypi certifi 2022.9.24 py39hca03da5_0 cffi 1.15.1 py39h22df2f2_0 cfitsio 3.470 h7f6438f_7 chardet 4.0.0 py39hca03da5_1003 charls 2.2.0 hc377ac9_0 charset-normalizer 2.0.4 pyhd3eb1b0_0 chex 0.1.6 pypi_0 pypi click 8.0.4 py39hca03da5_0 cloudpickle 2.0.0 pyhd3eb1b0_0 clyent 1.2.1 pypi_0 pypi cmake 3.26.3 pypi_0 pypi colorama 0.4.5 py39hca03da5_0 colorcet 3.0.0 py39hca03da5_0 conda 22.9.0 py39hca03da5_0 conda-build 3.22.0 py39hca03da5_0 conda-content-trust 0.1.3 py39hca03da5_0 conda-env 2.6.0 hca03da5_1 conda-pack 0.7.1 pyhd8ed1ab_0 conda-forge conda-package-handling 2.2.0 pyh38be061_0 conda-forge conda-package-streaming 0.9.0 pyhd8ed1ab_0 conda-forge conda-repo-cli 1.0.20 py39hca03da5_0 conda-token 0.4.0 pyhd3eb1b0_0 conda-verify 3.4.2 py_1 constantly 15.1.0 pyh2b92418_0 contextlib2 21.6.0 pypi_0 pypi contourpy 1.3.0 pypi_0 pypi croniter 1.4.1 pypi_0 pypi cryptography 37.0.1 py39h834c97f_0 cssselect 1.1.0 pyhd3eb1b0_0 ctxcore 0.2.0 pypi_0 pypi curl 7.84.0 h1a28f6b_0 custom-inherit 2.4.1 pypi_0 pypi cycler 0.11.0 pyhd3eb1b0_0 cython 0.29.32 py39hc377ac9_0 cytoolz 0.11.0 py39h1a28f6b_0 dask 2022.7.0 py39hca03da5_0 dask-core 2022.7.0 py39hca03da5_0 dataclasses 0.8 pyh6d0b6a4_7 datashader 0.14.1 py39hca03da5_0 datashape 0.5.4 py39hca03da5_1 dateutils 0.6.12 pypi_0 pypi debugpy 1.5.1 py39hc377ac9_0 decorator 5.1.1 pyhd3eb1b0_0 decoupler 1.8.0 pypi_0 pypi deepdiff 6.3.1 pypi_0 pypi defusedxml 0.7.1 pyhd3eb1b0_0 dill 0.3.4 pyhd3eb1b0_0 diskcache 5.4.0 pypi_0 pypi distributed 2022.7.0 py39hca03da5_0 dm-tree 0.1.8 pypi_0 pypi docrep 0.3.2 pypi_0 pypi docutils 0.18.1 py39hca03da5_3 entrypoints 0.4 py39hca03da5_0 equinox 0.11.7 pypi_0 pypi et_xmlfile 1.1.0 py39hca03da5_0 etils 1.1.0 pypi_0 pypi exceptiongroup 1.2.0 pyhd8ed1ab_0 conda-forge executing 0.8.3 pyhd3eb1b0_0 fastapi 0.100.0 pypi_0 pypi fcsparser 0.2.6 pypi_0 pypi fftw 3.3.9 h1a28f6b_1 filelock 3.6.0 pyhd3eb1b0_0 flask 1.1.2 pyhd3eb1b0_0 flax 0.6.7 pypi_0 pypi fonttools 4.25.0 pyhd3eb1b0_0 freetype 2.11.0 h1192e45_0 frozendict 2.3.8 pypi_0 pypi frozenlist 1.3.3 pypi_0 pypi fsspec 2022.7.1 py39hca03da5_0 future 0.18.2 py39hca03da5_1 gdown 4.7.1 pypi_0 pypi genomepy 0.15.0 pypi_0 pypi gensim 4.1.2 py39hc377ac9_0 gettext 0.21.0 h826f4ad_0 giflib 5.2.1 h1a28f6b_0 glib 2.69.1 h98b2900_1 glob2 0.7 pyhd3eb1b0_0 glpk 4.65 h6d7a090_1004 conda-forge gmp 6.2.1 hc377ac9_3 gmpy2 2.1.2 py39h8c48613_0 greenlet 1.1.0 py39hc377ac9_0 gst-plugins-base 1.14.1 h313beb8_1 gstreamer 1.14.1 h80987f9_1 h11 0.14.0 pypi_0 pypi h5netcdf 1.3.0 pypi_0 pypi h5py 3.7.0 py39h7fe8675_0 hdf5 1.12.1 h160e8cb_2 heapdict 1.0.1 pyhd3eb1b0_0 holoviews 1.15.0 py39hca03da5_0 huggingface-hub 0.13.2 pypi_0 pypi hvplot 0.8.0 py39hca03da5_0 hyperlink 21.0.0 pyhd3eb1b0_0 icu 68.1 hc377ac9_0 idna 3.3 pyhd3eb1b0_0 igraph 0.10.4 pypi_0 pypi imagecodecs 2021.8.26 py39h0dccdf0_1 imageio 2.19.3 py39hca03da5_0 imagesize 1.4.1 py39hca03da5_0 importlib-metadata 4.11.3 py39hca03da5_0 importlib-resources 5.12.0 pypi_0 pypi importlib_metadata 4.11.3 hd3eb1b0_0 incremental 21.3.0 pyhd3eb1b0_0 iniconfig 1.1.1 pyhd3eb1b0_0 inquirer 3.1.3 pypi_0 pypi install 1.3.5 pypi_0 pypi intake 0.6.5 pyhd3eb1b0_0 interlap 0.2.7 pypi_0 pypi ipykernel 6.15.2 py39hca03da5_0 ipython 8.4.0 py39hca03da5_0 ipython_genutils 0.2.0 pyhd3eb1b0_1 ipywidgets 7.6.5 pyhd3eb1b0_1 isort 5.9.3 pyhd3eb1b0_0 itemadapter 0.3.0 pyhd3eb1b0_0 itemloaders 1.0.4 pyhd3eb1b0_1 itsdangerous 2.0.1 pyhd3eb1b0_0 jax 0.4.30 pypi_0 pypi jaxlib 0.4.30 pypi_0 pypi jaxopt 0.8.3 pypi_0 pypi jaxtyping 0.2.34 pypi_0 pypi jdcal 1.4.1 pyhd3eb1b0_0 jedi 0.18.1 py39hca03da5_1 jinja2 2.11.3 pyhd3eb1b0_0 jmespath 0.10.0 pyhd3eb1b0_0 joblib 1.1.0 pyhd3eb1b0_0 jpeg 9e h1a28f6b_0 jq 1.6 h1a28f6b_1 json5 0.9.6 pyhd3eb1b0_0 jsonschema 4.16.0 py39hca03da5_0 jupyter_client 7.3.4 py39hca03da5_0 jupyter_console 6.4.3 pyhd3eb1b0_0 jupyter_core 4.11.1 py39hca03da5_0 jupyter_server 1.18.1 py39hca03da5_0 jupyterlab 3.4.4 py39hca03da5_0 jupyterlab_pygments 0.1.2 py_0 jupyterlab_server 2.10.3 pyhd3eb1b0_1 jupyterlab_widgets 1.0.0 pyhd3eb1b0_1 jxrlib 1.1 h1a28f6b_2 kiwisolver 1.4.2 py39hc377ac9_0 krb5 1.19.2 h3b8d789_0 lazy-object-proxy 1.6.0 py39h1a28f6b_0 lcms2 2.12 hba8e193_0 ld64 530 hb29bf3f_25 ld64_osx-arm64 530 h001ce53_25 ldid 2.1.2 h64d1936_2 leidenalg 0.9.1 pypi_0 pypi lerc 3.0 hc377ac9_0 libaec 1.0.4 hc377ac9_1 libarchive 3.6.1 he3a3bf9_0 libblas 3.9.0 16_osxarm64_openblas conda-forge libbrotlicommon 1.0.9 h1a28f6b_7 libbrotlidec 1.0.9 h1a28f6b_7 libbrotlienc 1.0.9 h1a28f6b_7 libclang 12.0.0 default_hc321e17_4 libcurl 7.84.0 hc6d1d07_0 libcxx 14.0.6 h848a8c0_0 libdeflate 1.8 h1a28f6b_5 libedit 3.1.20210910 h1a28f6b_0 libev 4.33 h1a28f6b_1 libffi 3.4.2 hc377ac9_4 libgfortran 5.0.0 11_2_0_he6877d6_26 libgfortran5 11.2.0 he6877d6_26 libiconv 1.16 h1a28f6b_2 libidn2 2.3.1 h1a28f6b_0 liblapack 3.9.0 16_osxarm64_openblas conda-forge liblief 0.11.5 hc377ac9_1 libllvm11 11.1.0 h12f7ac0_5 libllvm12 12.0.1 h93073aa_2 conda-forge libllvm14 14.0.6 h4b41812_0 libnghttp2 1.46.0 h95c9599_0 libopenblas 0.3.21 h269037a_0 libpng 1.6.37 hb8d0fd4_0 libpq 12.9 h65cfe13_3 libsodium 1.0.18 h1a28f6b_0 libssh2 1.10.0 hf27765b_0 libtiff 4.4.0 had003b8_0 libunistring 0.9.10 h1a28f6b_0 libwebp 1.2.2 h68602c7_0 libwebp-base 1.2.2 h1a28f6b_0 libxml2 2.9.14 h8c5e841_0 libxslt 1.1.35 h9833966_0 libzopfli 1.0.3 hc377ac9_0 lightning 2.0.5 pypi_0 pypi lightning-cloud 0.5.37 pypi_0 pypi lightning-utilities 0.8.0 pypi_0 pypi lineax 0.0.5 pypi_0 pypi llvm-openmp 14.0.6 hc6e5704_0 llvmlite 0.43.0 pypi_0 pypi locket 1.0.0 py39hca03da5_0 loguru 0.6.0 pypi_0 pypi loompy 3.0.7 pypi_0 pypi lxml 4.9.1 py39h2fae87d_0 lz4 3.1.3 py39h1a28f6b_0 lz4-c 1.9.3 hc377ac9_0 lzo 2.10 h1a28f6b_2 markdown 3.3.4 py39hca03da5_0 markdown-it-py 2.2.0 pypi_0 pypi markupsafe 2.0.1 py39h1a28f6b_0 matplotlib 3.9.2 pypi_0 pypi matplotlib-inline 0.1.6 py39hca03da5_0 mccabe 0.7.0 pyhd3eb1b0_0 mdurl 0.1.2 pypi_0 pypi metis 5.1.1 h965bd2d_2 conda-forge mistune 0.8.4 py39h1a28f6b_1000 mizani 0.11.4 pypi_0 pypi ml-collections 0.1.1 pypi_0 pypi ml-dtypes 0.2.0 pypi_0 pypi mock 4.0.3 pyhd3eb1b0_0 mpc 1.1.0 h8c48613_1 mpfr 4.0.2 h695f6f0_1 mpmath 1.2.1 py39hca03da5_0 msgpack-python 1.0.3 py39h525c30c_0 mudata 0.2.1 pypi_0 pypi multidict 6.0.4 pypi_0 pypi multipledispatch 0.6.0 py39hca03da5_0 multiprocessing-on-dill 3.5.0a4 pypi_0 pypi munkres 1.1.4 py_0 muon 0.1.5 pypi_0 pypi mygene 3.2.2 pypi_0 pypi mysql-connector-python 8.0.32 pypi_0 pypi natsort 8.3.1 pypi_0 pypi navigator-updater 0.3.0 py39hca03da5_0 nbclassic 0.3.5 pyhd3eb1b0_0 nbclient 0.5.13 py39hca03da5_0 nbconvert 6.4.4 py39hca03da5_0 nbformat 5.4.0 pypi_0 pypi ncurses 6.3 h1a28f6b_3 nest-asyncio 1.5.5 py39hca03da5_0 networkx 2.8.4 py39hca03da5_0 newick 1.0.0 pypi_0 pypi nltk 3.7 pyhd3eb1b0_0 nomkl 3.0 0 norns 0.1.6 pypi_0 pypi nose 1.3.7 pyhd3eb1b0_1008 notebook 6.4.12 py39hca03da5_0 nspr 4.35 hb7217d7_0 conda-forge nss 3.74 h142855e_0 numba 0.60.0 pypi_0 pypi numexpr 2.8.3 py39h144ceef_0 numpy 1.24.3 pypi_0 pypi numpy-groupies 0.9.20 pypi_0 pypi numpydoc 1.4.0 py39hca03da5_0 numpyro 0.12.1 pypi_0 pypi olefile 0.46 pyhd3eb1b0_0 oniguruma 6.9.7.1 h1a28f6b_0 openblas 0.3.21 hca03da5_0 openblas-devel 0.3.21 hca03da5_0 openjpeg 2.3.0 h7a6adac_2 openpyxl 3.0.10 py39h1a28f6b_0 openssl 1.1.1q h1a28f6b_0 opt-einsum 3.3.0 pypi_0 pypi optax 0.1.4 pypi_0 pypi orbax 0.1.4 pypi_0 pypi ordered-set 4.1.0 pypi_0 pypi ott-jax 0.4.8 pypi_0 pypi packaging 21.3 pyhd3eb1b0_0 palantir 1.2 pypi_0 pypi pandas 2.2.2 pypi_0 pypi pandoc 3.1.3 hce30654_0 conda-forge pandocfilters 1.5.0 pyhd3eb1b0_0 panel 0.13.1 py39hca03da5_0 param 1.12.0 pyhd3eb1b0_0 parsel 1.6.0 py39hca03da5_0 parso 0.8.3 pyhd3eb1b0_0 partd 1.2.0 pyhd3eb1b0_1 patch 2.7.6 h1a28f6b_1001 pathlib 1.0.1 py_1 conda-forge patsy 0.5.6 pypi_0 pypi pcre 8.45 hbdafb3b_0 conda-forge pep8 1.7.1 py39hca03da5_1 pertpy 0.6.0 pypi_0 pypi pexpect 4.8.0 pyhd3eb1b0_3 phenograph 1.5.7 pypi_0 pypi pickleshare 0.7.5 pyhd3eb1b0_1003 pillow 9.2.0 py39h4d1bdd5_1 pip 22.2.2 py39hca03da5_0 pkginfo 1.8.2 pyhd3eb1b0_0 platformdirs 2.5.2 py39hca03da5_0 plotly 5.9.0 py39hca03da5_0 plotnine 0.13.6 pypi_0 pypi pluggy 1.0.0 py39hca03da5_1 ply 3.11 py39hca03da5_0 progressbar2 4.2.0 pypi_0 pypi prometheus_client 0.14.1 py39hca03da5_0 prompt-toolkit 3.0.20 pyhd3eb1b0_0 prompt_toolkit 3.0.20 hd3eb1b0_0 protego 0.1.16 py_0 protobuf 3.20.3 pypi_0 pypi psutil 5.9.0 py39h1a28f6b_0 ptyprocess 0.7.0 pyhd3eb1b0_2 pure_eval 0.2.2 pyhd3eb1b0_0 py 1.11.0 pyhd3eb1b0_0 py-lief 0.11.5 py39hc377ac9_1 pyarrow 13.0.0 pypi_0 pypi pyasn1 0.4.8 pyhd3eb1b0_0 pyasn1-modules 0.2.8 py_0 pycodestyle 2.8.0 pyhd3eb1b0_0 pycosat 0.6.3 py39h1a28f6b_0 pycparser 2.21 pyhd3eb1b0_0 pyct 0.4.8 py39hca03da5_1 pycurl 7.45.1 py39hf27765b_0 pydantic 1.10.11 pypi_0 pypi pydispatcher 2.0.5 py39hca03da5_2 pyerfa 2.0.0 py39h1a28f6b_0 pyfaidx 0.7.2.1 pypi_0 pypi pyflakes 2.4.0 pyhd3eb1b0_0 pygam 0.9.0 pypi_0 pypi pygments 2.14.0 pypi_0 pypi pyhamcrest 2.0.2 pyhd3eb1b0_2 pyjwt 2.8.0 pyhd8ed1ab_0 conda-forge pylint 2.14.5 py39hca03da5_0 pymde 0.1.18 pypi_0 pypi pynndescent 0.5.8 pypi_0 pypi pyodbc 4.0.34 py39hc377ac9_0 pyomo 6.8.0 pypi_0 pypi pyopenssl 22.0.0 pyhd3eb1b0_0 pyparsing 3.0.9 py39hca03da5_0 pypng 0.20220715.0 pypi_0 pypi pyqt 5.15.7 py39hc377ac9_0 pyqt5-sip 12.11.0 py39hc377ac9_0 pyro-api 0.1.2 pypi_0 pypi pyro-ppl 1.8.4 pypi_0 pypi pyrsistent 0.18.0 py39h1a28f6b_0 pysam 0.22.0 pypi_0 pypi pysocks 1.7.1 py39hca03da5_0 pytables 3.7.0 py39h701507b_0 pytest 7.1.2 py39hca03da5_0 python 3.9.13 hbdb9e5c_1 python-dateutil 2.8.2 pyhd3eb1b0_0 python-editor 1.0.4 pypi_0 pypi python-fastjsonschema 2.16.2 py39hca03da5_0 python-igraph 0.10.4 pypi_0 pypi python-libarchive-c 2.9 pyhd3eb1b0_1 python-multipart 0.0.6 pypi_0 pypi python-snappy 0.6.0 py39hc377ac9_0 python-utils 3.5.2 pypi_0 pypi python.app 3 py39h1a28f6b_0 python_abi 3.9 2_cp39 conda-forge pytorch-lightning 1.9.4 pypi_0 pypi pytz 2022.1 py39hca03da5_0 pytz-deprecation-shim 0.1.0.post0 pypi_0 pypi pyviz_comms 2.0.2 pyhd3eb1b0_0 pywavelets 1.3.0 py39h1a28f6b_0 pyyaml 6.0 py39h1a28f6b_0 pyzmq 23.2.0 py39hc377ac9_0 qt-main 5.15.2 ha2d02b5_7 qt-webengine 5.15.9 h2903aaf_7 qtpy 2.4.1 pyhd8ed1ab_0 conda-forge qtwebkit 5.212 h0f11f3c_4 queuelib 1.5.0 py39hca03da5_0 readchar 4.0.5 pypi_0 pypi readline 8.1.2 h1a28f6b_1 regex 2022.7.9 py39h1a28f6b_0 reportlab 4.2.2 pypi_0 pypi requests 2.28.1 py39hca03da5_0 requests-file 1.5.1 pyhd3eb1b0_0 rich 13.3.2 pypi_0 pypi rope 0.22.0 pyhd3eb1b0_0 rpy2 3.5.10 pypi_0 pypi ruamel_yaml 0.15.100 py39h1a28f6b_0 s3transfer 0.6.0 py39hca03da5_0 scanpy 1.9.3 pyhd8ed1ab_0 conda-forge scarches 0.5.9 pypi_0 pypi schpl 1.0.3 pypi_0 pypi scikit-image 0.19.2 py39h9197a36_0 scikit-learn 1.1.1 py39hc377ac9_0 scikit-misc 0.1.4 pypi_0 pypi scipy 1.10.1 pypi_0 pypi scrapy 2.6.2 py39hca03da5_0 scrublet 0.2.3 pypi_0 pypi scvi-colab 0.12.0 pypi_0 pypi scvi-tools 1.0.2 pypi_0 pypi seaborn 0.11.2 pyhd3eb1b0_0 send2trash 1.8.0 pyhd3eb1b0_1 service_identity 18.1.0 pyhd3eb1b0_1 session-info 1.0.0 pyhd8ed1ab_0 conda-forge setuptools 63.4.1 py39hca03da5_0 sip 6.6.2 py39hc377ac9_0 six 1.16.0 pyhd3eb1b0_1 smart_open 5.2.1 py39hca03da5_0 snappy 1.1.9 hc377ac9_0 sniffio 1.2.0 py39hca03da5_1 snowballstemmer 2.2.0 pyhd3eb1b0_0 sortedcollections 2.1.0 pyhd3eb1b0_0 sortedcontainers 2.4.0 pyhd3eb1b0_0 soupsieve 2.3.1 pyhd3eb1b0_0 sparse 0.14.0 pypi_0 pypi sparsecca 0.3.1 pypi_0 pypi sphinx 5.0.2 py39hca03da5_0 sphinxcontrib-applehelp 1.0.2 pyhd3eb1b0_0 sphinxcontrib-devhelp 1.0.2 pyhd3eb1b0_0 sphinxcontrib-htmlhelp 2.0.0 pyhd3eb1b0_0 sphinxcontrib-jsmath 1.0.1 pyhd3eb1b0_0 sphinxcontrib-qthelp 1.0.3 pyhd3eb1b0_0 sphinxcontrib-serializinghtml 1.1.5 pyhd3eb1b0_0 sqlalchemy 1.4.39 py39h1a28f6b_0 sqlite 3.39.3 h1058600_0 stack_data 0.2.0 pyhd3eb1b0_0 starlette 0.27.0 pypi_0 pypi starsessions 1.3.0 pypi_0 pypi statsmodels 0.14.3 pypi_0 pypi stdlib-list 0.8.0 pyhd8ed1ab_0 conda-forge suitesparse 5.10.1 h9223979_2 sympy 1.10.1 py39hca03da5_0 tabulate 0.8.10 py39hca03da5_0 tapi 1100.0.11 h8754e6a_1 tbb 2021.5.0 h525c30c_0 tbb4py 2021.5.0 py39h525c30c_0 tblib 1.7.0 pyhd3eb1b0_0 tenacity 8.0.1 py39hca03da5_1 tensorstore 0.1.33 pypi_0 pypi terminado 0.13.1 py39hca03da5_0 testpath 0.6.0 py39hca03da5_0 texttable 1.7.0 pyhd8ed1ab_0 conda-forge threadpoolctl 2.2.0 pyh0d69192_0 tifffile 2021.7.2 pyhd3eb1b0_2 tk 8.6.12 hb8d0fd4_0 tldextract 3.2.0 pyhd3eb1b0_0 toml 0.10.2 pyhd3eb1b0_0 tomli 2.0.1 py39hca03da5_0 tomlkit 0.11.1 py39hca03da5_0 toolz 0.11.2 pyhd3eb1b0_0 torch 2.0.0 pypi_0 pypi torchaudio 2.0.1 pypi_0 pypi torchmetrics 0.11.4 pypi_0 pypi torchvision 0.15.1 pypi_0 pypi tornado 6.1 py39h1a28f6b_0 toyplot 1.0.3 pypi_0 pypi toytree 3.0.5 pypi_0 pypi tqdm 4.66.5 pypi_0 pypi traitlets 5.9.0 pypi_0 pypi twisted 22.2.0 py39h1a28f6b_1 typeguard 2.13.3 pypi_0 pypi typing-extensions 4.12.2 pypi_0 pypi tzdata 2022.7 pypi_0 pypi tzlocal 4.2 pypi_0 pypi ujson 5.4.0 py39hc377ac9_0 umap-learn 0.5.4 py39hca03da5_0 unixodbc 2.3.11 h1a28f6b_0 urllib3 1.26.11 py39hca03da5_0 uvicorn 0.22.0 pypi_0 pypi w3lib 1.21.0 pyhd3eb1b0_0 wcwidth 0.2.5 pyhd3eb1b0_0 webencodings 0.5.1 py39hca03da5_1 websocket-client 0.58.0 py39hca03da5_4 websockets 11.0.3 pypi_0 pypi werkzeug 2.0.3 pyhd3eb1b0_0 wget 1.21.3 hc6d1d07_0 wheel 0.37.1 pyhd3eb1b0_0 widgetsnbextension 3.5.2 py39hca03da5_0 wrapt 1.14.1 py39h1a28f6b_0 xarray 2023.6.0 pypi_0 pypi xarray-einstats 0.7.0 pypi_0 pypi xlrd 2.0.1 pyhd3eb1b0_0 xlsxwriter 3.0.3 pyhd3eb1b0_0 xlwings 0.27.15 py39hca03da5_0 xz 5.2.6 h1a28f6b_0 yaml 0.2.5 h1a28f6b_0 yarl 1.8.2 pypi_0 pypi zeromq 4.3.4 hc377ac9_0 zfp 0.5.5 hc377ac9_6 zict 2.1.0 py39hca03da5_0 zipp 3.8.0 py39hca03da5_0 zlib 1.2.12 h5a0b063_3 zope 1.0 py39hca03da5_1 zope.interface 5.4.0 py39h1a28f6b_0 zstandard 0.19.0 py39h80987f9_0 zstd 1.5.2 h8574219_0